using System;
using Me.Prettyprint.Cassandra.Model.Thrift;

namespace Me.Prettyprint.Hector.Api.Query
{
    /// <summary>
    /// The Query interface defines the common parts of all hector queries, such as {@link ThriftColumnQuery}.
    /// <p>
    /// The common usage pattern is to create a query, set the required query attributes and invoke
    /// Query#execute() such as in the following example:
    /// <pre>
    /// ColumnQuery<String, String> q = createColumnQuery(keyspace, serializer, serializer);
    /// Result<HColumn<String, String>> r = q.setKey(key).
    ///     setName(COLUMN_NAME).
    ///     setColumnFamily(CF_NAME).execute();
    ///     HColumn<String, String> c = r.get();
    /// return c.getValue();
    /// </pre>
    /// </summary>
    /// <typeparam name="T"></typeparam>
	public interface Query<T>
	{ 
		QueryResult<T> Execute();
	}
}